/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package demo.intro;

import java.util.Scanner;

/**
 *
 * @author VANDH
 */
public class JPI1209A {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int choice = 4;
        do {
            System.out.println("===============================");
            System.out.println("1. Tính hóa đơn");
            System.out.println("2. Tính Fn");
            System.out.println("3. Tính trung bình đánh giá");
            System.out.println("4. Thoát");
            System.out.println("Chọn chức năng số mấy? : ");

            for (int i = 1; i < 5; i++)
            {
                for(int j = 1; j < 5; j++)
                {
                    System.out.printf("(%d,%d)", i, j);
                    if (j > 2)
                        break;
                }
            }
            Scanner keyboard = new Scanner(System.in);
            choice = keyboard.nextInt();

            switch (choice) {
                case 1:
                    tinhHoaDon();
                    break;
                case 2:
                    System.out.printf("Nhập n = ");

                    int n = keyboard.nextInt();
                    int fn = tinhSoFiboThuN(n); // -> 8

                    System.out.printf("fn = %d", fn);
                    break;
                case 3:
                    int[] rate = new int[5];
                    nhapDanhGia(rate);  // nhập dữ liệu cho mảng
                    double trungBinh = tinhDanhGia(rate); // tính trung bình
                    System.out.printf("Trung binh = %f\n", trungBinh);
                    break;
            }
        } while (choice != 4);
    }

    private static void tinhHoaDon() {
//         VCT tính tổng tiền 1 hóa đơn mua quần áo
//         mỗi cái áo có giá 100k
//         mỗi cái quần có giá 200k
//         cho phép nhập vô số lượng áo, quần
//         hỏi có giảm giá không, giảm 15%
//         in ra tổng tiền
        int giaAo = 100000, giaQuan = 200000;

        Scanner keyboard = new Scanner(System.in);

        System.out.printf("Nhập vào số áo : ");
        int soLuongAo = keyboard.nextInt(); // 123

        System.out.printf("Nhập vào số quần : ");
        int soLuongQuan = keyboard.nextInt(); // 123

        System.out.printf("Giảm giá không (y/n)?");
        String choice = keyboard.next();
        boolean giamGia;
        if (choice.equals("y")) {
            giamGia = true;
        } else {
            giamGia = false;
        }

        float tongTien = (float) (soLuongAo * giaAo) + (soLuongQuan * giaQuan);

        if (giamGia) {
            tongTien = (float) (tongTien * (1 - 0.15));
        }

        System.out.printf("Tổng tiền là : %f", tongTien);
    }

    private static int tinhSoFiboThuN(int n) {
        // Dãy số Fibonacci : 1 = ,f1 = 1, f2 = 2,3,5,8...
        // Viết hàm tính phần tử Fn
        int fn = 0;

        if (n <= 2) {
            fn = 1;
            return fn;
        }

        int f1 = 1, f2 = 1;
        for (int i = 3; i <= n; i++) {
            // tính phần tử thứ i
            fn = f1 + f2;
            f1 = f2;
            f2 = fn;
        }

        return fn; // return fn
    }

    private static void nhapDanhGia(int[] rate) {
        int soSao;
        do {
            System.out.printf("Bạn chọn mấy sao? ");
            Scanner keyboard = new Scanner(System.in);
            soSao = keyboard.nextInt();

            if (soSao > -1) {
                rate[soSao - 1] += 1;
            }
        } while (soSao != -1);
    }

    private static double tinhDanhGia(int[] rate) {
        double trungBinh = 0;
        int tongLuot = 0;
        int tongSao = 0;

        for (int i = 0; i < rate.length; i++) {
            tongSao += (i + 1) * rate[i];
            tongLuot += rate[i];
        }

        trungBinh = tongSao / tongLuot;
        return trungBinh;
    }
}
